suppressPackageStartupMessages(library(tidyverse))
devtools::load_all('~/Google Drive/My Drive/Scripts/R_packages/myUtilities/')
## ℹ Loading myUtilities

Settings

data_dir <- '/Volumes/Mitsu_NGS_3/METTL2A/'

wd <- "~/Google Drive/My Drive/Analysis/METTL2A/"
setwd(wd)

figdir <- paste0(wd, 'Figures/DRS_m3C_RNAs/Isoforms/')
tabledir <- paste0(wd, 'Tables/DRS_m3C_RNAs/Isoforms/')

theme_set(
  theme_classic(base_size = 7) +
    theme(legend.position = 'bottom')
)

Functions

paste_wd <- function(path) {
  
  paste0(wd, path)
  
}

calc_percent_isoform <- function(df) {
  
  df |> 
    group_by(transcript_id, transcript_name) |> 
    reframe(sum_normcount = sum(normcount, na.rm = TRUE)) |> 
    mutate(percent_transcript = 100 * sum_normcount / sum(sum_normcount)) |> 
    arrange(-percent_transcript)
  
}

calc_percent_isoform_rep <- function(df) {
  df |> 
    group_by(transcript_id, transcript_name, gene_id, gene_name, type, si, rep) |> 
    reframe(sum_normcount = sum(normcount, na.rm = TRUE)) |>
    group_by(gene_id, gene_name, type, si, rep) |> 
    mutate(percent_transcript = 100 * sum_normcount / sum(sum_normcount)) 
}

calc_median_normcount_isoforms <- function(df) {
  
  df |> 
    group_by(transcript_id, transcript_name, type, si) |>
    reframe(median_count = median(normcount)) |>
    arrange(-median_count) |>
    pivot_wider(
      id_cols = c(transcript_id, transcript_name), 
      names_from = c(type, si), values_from = median_count
    )
  
}

barplot_normcount_isoforms <- function(.genename) {
  
  df4filtration <- normcount |>
    filter(gene_name == .genename) |> 
    calc_percent_isoform()
  
  filtered_df <- 
    normcount |> 
    right_join(df4filtration |> filter(percent_transcript > 1)) |>
    arrange(-percent_transcript) |> 
    mutate(transcript_id = reorder(transcript_id, -percent_transcript))
  print(filtered_df)
  
  ttest_result <-  filtered_df |> 
    group_by(transcript_id) |> 
    rstatix::t_test(normcount ~ si, ref.group = 'D') |> 
    rstatix::add_y_position(step.increase = .2, scales = 'free')
  print(ttest_result)
  
  plot_basename <- paste0(.genename)
  
  
  if (nrow(filtered_df) > 9) {
    
    isoform_normcount_barplot <- 
      filtered_df |> 
      ggplot(aes(x = si |> fct_rev(), y = normcount)) +
      stat_summary(aes(fill = si), geom = 'bar') +
      geom_point(size = 1/5, position = position_jitter(height = 0, width = .2)) +
      ggpubr::stat_pvalue_manual(
        data = ttest_result, step.group.by = 'transcript_id', 
        tip.length = 0, coord.flip = TRUE
      ) +
      scale_fill_manual(values = c('#8C8C8C', '#37D9CC', '#A3A3F9')) +
      scale_y_continuous(expand = expansion(mult = c(0, .2))) +
      coord_flip() +
      facet_wrap( ~ transcript_id, scales = 'free', nrow = 2)
    
    isoform_normcount_barplot |> 
      ggsave_multiple_formats(
        basename = plot_basename, outdir = figdir, 
        height = 5, width = 3 * (nrow(filtered_df) / (9 * 2)), fontsize = 7
      )
    
  } else if (nrow(filtered_df) == 9) {
    
    isoform_normcount_barplot <- 
      filtered_df |> 
      ggplot(aes(x = si |> fct_rev(), y = normcount)) +
      stat_summary(aes(fill = si), geom = 'bar') +
      geom_point(size = 1/5, position = position_jitter(height = 0, width = .2)) +
      ggpubr::stat_pvalue_manual(
        data = ttest_result, step.group.by = 'transcript_id', 
        tip.length = 0, coord.flip = TRUE
      ) +
      scale_fill_manual(values = c('#8C8C8C', '#37D9CC', '#A3A3F9')) +
      scale_y_continuous(expand = expansion(mult = c(0, .2))) +
      coord_flip() +
      facet_wrap( ~ transcript_id, scales = 'free', nrow = 1)
    
    isoform_normcount_barplot |> 
      ggsave_multiple_formats(
        basename = plot_basename, outdir = figdir, 
        height = 5, width = 3, fontsize = 7
      )
  }
  
  
}

perform_ttest_si <- function(df) {
  
  result <- tryCatch(
    rstatix::t_test(
      data = df, percent_transcript ~ si, ref.group = 'D',
      p.adjust.method = 'none'
    ),
    error = function(e) return(NA) 
  )
  return(result)
}

perform_ttest_type <- function(df) {
  
  result <- tryCatch(
    rstatix::t_test(
      data = df, percent_transcript ~ type, ref.group = 'Cont', 
      p.adjust.method = 'none'
    ),
    error = function(e) return(NA) 
  )
  return(result)
}

barplot_percentage_isoforms <- function(.genename, expression_cutoff = 1) {
  
  filtered_df <- 
    percent_isoform_per_sample |> 
    filter(gene_name == .genename) |> 
    group_by(transcript_id) |> 
    filter(mean(percent_transcript) > expression_cutoff) |> 
    ungroup() |> 
    mutate(transcript_id = reorder(transcript_id, -percent_transcript))
  print(filtered_df)
  
  ttest_result <-  filtered_df |> 
    group_by(transcript_id) |> 
    rstatix::t_test(percent_transcript ~ si, ref.group = 'D') |> 
    rstatix::add_y_position(step.increase = .2, scales = 'free')
  print(ttest_result)
  
  plot_basename <- paste0(.genename, '_percent_isoforms')
  
  if (nrow(filtered_df) > 9) {
    
    isoform_normcount_barplot <- 
      filtered_df |> 
      ggplot(aes(x = si |> fct_rev(), y = percent_transcript)) +
      stat_summary(aes(fill = si), geom = 'bar') +
      geom_point(
        position = position_jitter(height = 0, width = .2), size = 1/5
      ) +
      ggpubr::stat_pvalue_manual(
        data = ttest_result, step.group.by = 'transcript_id', 
        tip.length = 0, coord.flip = TRUE
      ) +
      scale_fill_manual(values = c('#8C8C8C', '#37D9CC', '#A3A3F9')) +
      scale_y_continuous(expand = expansion(mult = c(0, .2))) +
      coord_flip() +
      facet_wrap( ~ transcript_id, scales = 'free', nrow = 2)
    
    isoform_normcount_barplot |> 
      ggsave_multiple_formats(
        basename = plot_basename, outdir = figdir, 
        height = 5, width = 3 * (nrow(filtered_df) / (9 * 2)), fontsize = 7
      )
    
  } else if (nrow(filtered_df) == 9) {
    
    isoform_normcount_barplot <- 
      filtered_df |> 
      ggplot(aes(x = si |> fct_rev(), y = percent_transcript)) +
      stat_summary(aes(fill = si), geom = 'bar') +
      geom_point(
        position = position_jitter(height = 0, width = .2), size = 1/5      
      ) +
      ggpubr::stat_pvalue_manual(
        data = ttest_result, step.group.by = 'transcript_id', 
        tip.length = 0, 
      ) +
      scale_fill_manual(values = c('#8C8C8C', '#37D9CC', '#A3A3F9')) +
      scale_y_continuous(expand = expansion(mult = c(0, .2))) +
      coord_flip()
    facet_wrap( ~ transcript_id, scales = 'free', nrow = 1)
    
    isoform_normcount_barplot |> 
      ggsave_multiple_formats(
        basename = plot_basename, outdir = figdir, 
        height = 5, width = 3, fontsize = 7
      )
  }
  
  
}

Read data

CPM

cpm <- 
  read_tsv(
    'Tables/DRS_quantification/espresso_quantification_cpm_2024-04-19.tsv.gz' |> 
      paste_wd()
  )
## Rows: 330453 Columns: 20
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (14): transcript_id, transcript_name, gene_id, type, si, seqname, source...
## dbl  (6): rep, count, total_reads, cpm, start, end
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
cpm
## # A tibble: 330,453 × 20
##    transcript_id     transcript_name gene_id type  si      rep count total_reads
##    <chr>             <chr>           <chr>   <chr> <chr> <dbl> <dbl>       <dbl>
##  1 ENST00000498442.1 CRBN-212        ENSG00… siME… I         1  0        3552783
##  2 ENST00000498442.1 CRBN-212        ENSG00… siME… I         2  1         997879
##  3 ENST00000498442.1 CRBN-212        ENSG00… siME… I         3  0        2778705
##  4 ENST00000498442.1 CRBN-212        ENSG00… siME… G         1  0        3497396
##  5 ENST00000498442.1 CRBN-212        ENSG00… siME… G         2  0        3810844
##  6 ENST00000498442.1 CRBN-212        ENSG00… siME… G         3  0        3668094
##  7 ENST00000498442.1 CRBN-212        ENSG00… Cont  D         1  1        2701773
##  8 ENST00000498442.1 CRBN-212        ENSG00… Cont  D         2  1        3406597
##  9 ENST00000498442.1 CRBN-212        ENSG00… Cont  D         3  0        3653792
## 10 ENST00000459840.5 CRBN-205        ENSG00… siME… I         1  1.08     3552783
## # ℹ 330,443 more rows
## # ℹ 12 more variables: cpm <dbl>, seqname <chr>, source <chr>, feature <chr>,
## #   start <dbl>, end <dbl>, score <chr>, strand <chr>, frame <chr>,
## #   gene_type <chr>, gene_name <chr>, transcript_type <chr>

normalized count

normcount <-  
  read_tsv(
    'Tables/Espresso/espresso_DESeq2_normcount__2024-05-21.tsv.gz' |> paste_wd()
  ) |> 
  pivot_longer(cols = c(siMETTL2A_I_N1:Cont_D_N3), values_to = 'normcount') |> 
  separate(name, into = c('type', 'si', 'rep'), sep = '_')
## Rows: 36717 Columns: 16
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (7): transcript_id, transcript_type, transcript_name, gene_id, gene_type...
## dbl (9): siMETTL2A_I_N1, siMETTL2A_I_N2, siMETTL2A_I_N3, siMETTL2A_G_N1, siM...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
normcount
## # A tibble: 330,453 × 11
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <chr>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  2 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  3 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  4 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  5 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  6 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  7 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  8 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  9 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
## 10 ENST00000459840.5 retained_intron CRBN-205        ENSG00… protein_… CRBN     
## # ℹ 330,443 more rows
## # ℹ 5 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>
normcount |> 
  export_tsv(outdir = tabledir, compression = 'gz')
## 
## Exported to: ~/Google Drive/My Drive/Analysis/METTL2A/Tables/DRS_m3C_RNAs/Isoforms/normcount_2024-07-29.tsv.gz
## # A tibble: 330,453 × 11
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <chr>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  2 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  3 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  4 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  5 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  6 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  7 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  8 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  9 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
## 10 ENST00000459840.5 retained_intron CRBN-205        ENSG00… protein_… CRBN     
## # ℹ 330,443 more rows
## # ℹ 5 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>

m3C RNAs

DRS_m3C_RNAs <- 
  read_tsv(
    'Tables/DRS_m3C_sites/DRS_methylated_positions_relative_range_2024-04-22.tsv' |> paste_wd()
  ) |> 
  select(transcript_id) |> 
  distinct() |> 
  left_join(cpm |> select(transcript_id, transcript_name, gene_id, gene_name) |> distinct()) |> 
  mutate(m3C_RNA = 'm3C RNA')
## Rows: 489 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (6): transcript_id, gene_name, seqname, gene_type, ref_kmer, genetype2
## dbl (7): kmer_start, kmer_end, kmer_middle, length, rel_kmer_start, rel_kmer...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Joining with `by = join_by(transcript_id)`
DRS_m3C_RNAs
## # A tibble: 71 × 5
##    transcript_id     transcript_name gene_id            gene_name m3C_RNA
##    <chr>             <chr>           <chr>              <chr>     <chr>  
##  1 ENST00000429711.7 RPL32-204       ENSG00000144713.13 RPL32     m3C RNA
##  2 ENST00000647248.2 RPL35A-211      ENSG00000182899.17 RPL35A    m3C RNA
##  3 ENST00000389680.2 MT-RNR1-201     ENSG00000211459.2  MT-RNR1   m3C RNA
##  4 ENST00000361390.2 MT-ND1-201      ENSG00000198888.2  MT-ND1    m3C RNA
##  5 ENST00000361453.3 MT-ND2-201      ENSG00000198763.3  MT-ND2    m3C RNA
##  6 ENST00000387347.2 MT-RNR2-201     ENSG00000210082.2  MT-RNR2   m3C RNA
##  7 ENST00000361624.2 MT-CO1-201      ENSG00000198804.2  MT-CO1    m3C RNA
##  8 ENST00000361739.1 MT-CO2-201      ENSG00000198712.1  MT-CO2    m3C RNA
##  9 ENST00000361899.2 MT-ATP6-201     ENSG00000198899.2  MT-ATP6   m3C RNA
## 10 ENST00000361227.2 MT-ND3-201      ENSG00000198840.2  MT-ND3    m3C RNA
## # ℹ 61 more rows

m3C RNA genes

DRS_m3C_genes <- 
  DRS_m3C_RNAs |> 
  select(gene_id, gene_name) |> 
  distinct() |> 
  mutate(m3C_gene = 'm3C gene')
DRS_m3C_genes
## # A tibble: 66 × 3
##    gene_id            gene_name m3C_gene
##    <chr>              <chr>     <chr>   
##  1 ENSG00000144713.13 RPL32     m3C gene
##  2 ENSG00000182899.17 RPL35A    m3C gene
##  3 ENSG00000211459.2  MT-RNR1   m3C gene
##  4 ENSG00000198888.2  MT-ND1    m3C gene
##  5 ENSG00000198763.3  MT-ND2    m3C gene
##  6 ENSG00000210082.2  MT-RNR2   m3C gene
##  7 ENSG00000198804.2  MT-CO1    m3C gene
##  8 ENSG00000198712.1  MT-CO2    m3C gene
##  9 ENSG00000198899.2  MT-ATP6   m3C gene
## 10 ENSG00000198840.2  MT-ND3    m3C gene
## # ℹ 56 more rows

Check expression level

espresso_DEseq2_normcount_DETinfo <- 
  read_tsv(
    'Tables/espresso_DEseq2_normcount_DETinfo_2024-06-03.tsv.gz' |> paste_wd()
  )
## Rows: 330453 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (12): transcript_id, transcript_type, transcript_name, gene_id, gene_typ...
## dbl  (1): norm_count
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
espresso_DEseq2_normcount_DETinfo
## # A tibble: 330,453 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <chr>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  2 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  3 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  4 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  5 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  6 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  7 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  8 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
##  9 ENST00000498442.1 retained_intron CRBN-212        ENSG00… protein_… CRBN     
## 10 ENST00000459840.5 retained_intron CRBN-205        ENSG00… protein_… CRBN     
## # ℹ 330,443 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   norm_count <dbl>, common_DETs <chr>, genetype2 <chr>
espresso_DEseq2_normcount_DETinfo_summary <- 
  espresso_DEseq2_normcount_DETinfo |> 
  group_by(transcript_id, gene_id, gene_name, common_DETs) |> 
  reframe(
    mean_normcount   = mean(norm_count, na.rm = TRUE),
    median_normcount = median(norm_count, na.rm = TRUE)
  )
espresso_DEseq2_normcount_DETinfo_summary
## # A tibble: 36,717 × 6
##    transcript_id   gene_id gene_name common_DETs mean_normcount median_normcount
##    <chr>           <chr>   <chr>     <chr>                <dbl>            <dbl>
##  1 ENST0000000023… ENSG00… ARF5      other              128.              146.  
##  2 ENST0000000041… ENSG00… M6PR      other               22.2              26.1 
##  3 ENST0000000044… ENSG00… ESRRA     other               20.3              18.3 
##  4 ENST0000000100… ENSG00… FKBP4     down                48.0              44.1 
##  5 ENST0000000212… ENSG00… NDUFAF7   other                5.60              5.19
##  6 ENST0000000216… ENSG00… FUCA2     other               59.5              57.4 
##  7 ENST0000000250… ENSG00… DBNDD1    other                0.195             0   
##  8 ENST0000000259… ENSG00… HS3ST1    other                5.16              5.21
##  9 ENST0000000310… ENSG00… CYP51A1   other               59.4              58.2 
## 10 ENST0000000358… ENSG00… STPG1     other                0.422             0   
## # ℹ 36,707 more rows

plot

espresso_DEseq2_normcount_DETinfo_summary |> 
  ggplot(aes(x = common_DETs, y = median_normcount)) +
  geom_violin() +
  geom_hline(yintercept = c(1,2,5)) +
  scale_y_log10()
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 18031 rows containing non-finite values (`stat_ydensity()`).

espresso_DEseq2_genelevel_normcount <- 
  espresso_DEseq2_normcount_DETinfo_summary |> 
  group_by(gene_id, gene_name) |> 
  reframe(sum_normcount = sum(median_normcount, na.rm = TRUE)) 
espresso_DEseq2_genelevel_normcount
## # A tibble: 13,419 × 3
##    gene_id            gene_name sum_normcount
##    <chr>              <chr>             <dbl>
##  1 ENSG00000000003.15 TSPAN6            38.6 
##  2 ENSG00000000419.14 DPM1              27.7 
##  3 ENSG00000000457.14 SCYL3              1.61
##  4 ENSG00000000460.17 C1orf112           3.53
##  5 ENSG00000001036.14 FUCA2             60.0 
##  6 ENSG00000001084.13 GCLC              19.7 
##  7 ENSG00000001167.15 NFYA               3.95
##  8 ENSG00000001460.18 STPG1              0   
##  9 ENSG00000001461.17 NIPAL3             7.84
## 10 ENSG00000001497.18 LAS1L              8.81
## # ℹ 13,409 more rows
espresso_DEseq2_genelevel_normcount |>
  ggplot(aes(x = sum_normcount)) +
  geom_density() +
  scale_x_log10() +
  geom_vline(xintercept = c(1, 1.5, 2))
## Warning: Transformation introduced infinite values in continuous x-axis
## Warning: Removed 4103 rows containing non-finite values (`stat_density()`).

Calculate isoform % per sample

percent_isoform_per_sample <- 
  normcount |> 
  right_join(espresso_DEseq2_genelevel_normcount) |> 
  filter(sum_normcount > 1) |> 
  calc_percent_isoform_rep()
## Joining with `by = join_by(gene_id, gene_name)`
percent_isoform_per_sample |> 
  export_tsv(outdir = tabledir, compression = 'gz')
## 
## Exported to: ~/Google Drive/My Drive/Analysis/METTL2A/Tables/DRS_m3C_RNAs/Isoforms/percent_isoform_per_sample_2024-07-29.tsv.gz
## # A tibble: 257,967 × 9
## # Groups:   gene_id, gene_name, type, si, rep [72,729]
##    transcript_id      transcript_name gene_id        gene_name type  si    rep  
##    <chr>              <chr>           <chr>          <chr>     <chr> <chr> <chr>
##  1 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      Cont  D     N1   
##  2 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      Cont  D     N2   
##  3 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      Cont  D     N3   
##  4 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      siME… G     N1   
##  5 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      siME… G     N2   
##  6 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      siME… G     N3   
##  7 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      siME… I     N1   
##  8 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      siME… I     N2   
##  9 ENST00000000233.10 ARF5-201        ENSG000000040… ARF5      siME… I     N3   
## 10 ENST00000000412.8  M6PR-201        ENSG000000030… M6PR      Cont  D     N1   
## # ℹ 257,957 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>

Calcualte ∆ percent isoforrm

All transcripts

diff_percent_isoform <- 
  percent_isoform_per_sample |> 
  group_by(transcript_id, gene_id, gene_name, type) |> 
  reframe(mean_percent_isoform = mean(percent_transcript, na.rm = TRUE)) |> 
  pivot_wider(names_from = type, values_from = mean_percent_isoform) |> 
  mutate(
    diff_percent_isoform = siMETTL2A - Cont,
    log2FC_percent_isoform = log2((siMETTL2A + 1)/ (Cont + 1))
  )
diff_percent_isoform |> 
  export_tsv(outdir = tabledir, compression = 'gz')
## 
## Exported to: ~/Google Drive/My Drive/Analysis/METTL2A/Tables/DRS_m3C_RNAs/Isoforms/diff_percent_isoform_2024-07-29.tsv.gz
## # A tibble: 28,663 × 7
##    transcript_id      gene_id     gene_name  Cont siMETTL2A diff_percent_isoform
##    <chr>              <chr>       <chr>     <dbl>     <dbl>                <dbl>
##  1 ENST00000000233.10 ENSG000000… ARF5       97.3      98.8                1.53 
##  2 ENST00000000412.8  ENSG000000… M6PR      100       100                  0    
##  3 ENST00000000442.11 ENSG000001… ESRRA      89.6      78.0              -11.7  
##  4 ENST00000001008.6  ENSG000000… FKBP4     100       100                  0    
##  5 ENST00000002125.9  ENSG000000… NDUFAF7    95.2     100                  4.76 
##  6 ENST00000002165.11 ENSG000000… FUCA2      95.6      95.9                0.235
##  7 ENST00000002596.6  ENSG000000… HS3ST1     96.7     100                  3.33 
##  8 ENST00000003100.13 ENSG000000… CYP51A1    87.5      91.1                3.58 
##  9 ENST00000004103.8  ENSG000000… TMEM176A   26.7      27.9                1.18 
## 10 ENST00000005178.6  ENSG000000… PDK4      100        91.7               -8.33 
## # ℹ 28,653 more rows
## # ℹ 1 more variable: log2FC_percent_isoform <dbl>
ttest_result_type <- 
  percent_isoform_per_sample |> 
  group_by(transcript_id, gene_id, gene_name) |> 
  do(ttest_result = perform_ttest_type(.)) |> 
  ungroup() |> 
  unnest(cols = ttest_result) |>
  arrange(p)
ttest_result_type 
## # A tibble: 28,663 × 11
##    transcript_id     gene_id gene_name .y.   group1 group2    n1    n2 statistic
##    <chr>             <chr>   <chr>     <chr> <chr>  <chr>  <int> <int>     <dbl>
##  1 ENST00000354332.8 ENSG00… S100A4    perc… Cont   siMET…     3     6     34.0 
##  2 ENST00000618691.5 ENSG00… NAP1L1    perc… Cont   siMET…     3     6     15.3 
##  3 ENST00000468262.5 ENSG00… TGM2      perc… Cont   siMET…     3     6     16.2 
##  4 ENST00000519638.3 ENSG00… ERLIN2    perc… Cont   siMET…     3     6    -13.4 
##  5 ENST00000447601.7 ENSG00… FAM3A     perc… Cont   siMET…     3     6     10.1 
##  6 ENST00000531242.1 ENSG00… NUCB2     perc… Cont   siMET…     3     6      9.86
##  7 ENST00000567065.5 ENSG00… INO80E    perc… Cont   siMET…     3     6    124   
##  8 ENST00000475373.1 ENSG00… UBAP2L    perc… Cont   siMET…     3     5    -12.6 
##  9 ENST00000323646.9 ENSG00… PLAAT3    perc… Cont   siMET…     3     6      8.70
## 10 ESPRESSO:chr5:12… ENSG00… CCNB1     perc… Cont   siMET…     3     6      8.61
## # ℹ 28,653 more rows
## # ℹ 2 more variables: df <dbl>, p <dbl>
diff_percent_isoform_pval <- 
  ttest_result_type |> 
  select(transcript_id, n1, n2, statistic, df, p) |> 
  mutate(p_adj = p.adjust(p, method = 'fdr')) |> 
  mutate(minuslog10padj = -log10(p_adj)) |> 
  full_join(diff_percent_isoform) |> 
  mutate(
    p_label    = ifelse(p     < .05, paste(gene_name, transcript_id, sep = '\n'), NA),
    padj_label = ifelse(p_adj < .05, paste(gene_name, transcript_id, sep = '\n'), NA)
  )
## Joining with `by = join_by(transcript_id)`
diff_percent_isoform_pval
## # A tibble: 28,663 × 16
##    transcript_id         n1    n2 statistic    df       p   p_adj minuslog10padj
##    <chr>              <int> <int>     <dbl> <dbl>   <dbl>   <dbl>          <dbl>
##  1 ENST00000354332.8      3     6     34.0   6.18 2.91e-8 7.72e-4          3.11 
##  2 ENST00000618691.5      3     6     15.3   6.71 1.80e-6 2.37e-2          1.63 
##  3 ENST00000468262.5      3     6     16.2   6.19 2.68e-6 2.37e-2          1.63 
##  4 ENST00000519638.3      3     6    -13.4   6.61 4.96e-6 3.29e-2          1.48 
##  5 ENST00000447601.7      3     6     10.1   6.25 4.16e-5 2.21e-1          0.656
##  6 ENST00000531242.1      3     6      9.86  5.98 6.43e-5 2.33e-1          0.633
##  7 ENST00000567065.5      3     6    124     2    6.5 e-5 2.33e-1          0.633
##  8 ENST00000475373.1      3     5    -12.6   4.82 7.02e-5 2.33e-1          0.633
##  9 ENST00000323646.9      3     6      8.70  6.39 8.99e-5 2.33e-1          0.632
## 10 ESPRESSO:chr5:125…     3     6      8.61  6.37 9.71e-5 2.33e-1          0.632
## # ℹ 28,653 more rows
## # ℹ 8 more variables: gene_id <chr>, gene_name <chr>, Cont <dbl>,
## #   siMETTL2A <dbl>, diff_percent_isoform <dbl>, log2FC_percent_isoform <dbl>,
## #   p_label <chr>, padj_label <chr>

Only m3C genes

diff_percent_isoform_m3Cgenes <- 
  percent_isoform_per_sample |> 
  right_join(DRS_m3C_genes) |> 
  filter(!is.na(gene_id)) |> 
  group_by(transcript_id, gene_id, gene_name, type) |> 
  reframe(mean_percent_isoform = mean(percent_transcript, na.rm = TRUE)) |> 
  pivot_wider(names_from = type, values_from = mean_percent_isoform) |> 
  mutate(diff_percent_isoform = siMETTL2A - Cont)
## Joining with `by = join_by(gene_id, gene_name)`
diff_percent_isoform_m3Cgenes
## # A tibble: 425 × 7
##    transcript_id    gene_id gene_name  Cont siMETTL2A  `NA` diff_percent_isoform
##    <chr>            <chr>   <chr>     <dbl>     <dbl> <dbl>                <dbl>
##  1 ENST00000009589… ENSG00… RPS20     95.7      95.4     NA              -0.304 
##  2 ENST00000199764… ENSG00… CEACAM6   96.2      96.0     NA              -0.264 
##  3 ENST00000202773… ENSG00… RPL6      77.2      80.2     NA               2.95  
##  4 ENST00000228306… ENSG00… RPLP0      5.32      3.53    NA              -1.80  
##  5 ENST00000229239… ENSG00… GAPDH     92.3      91.1     NA              -1.12  
##  6 ENST00000230050… ENSG00… RPS12     96.0      96.2     NA               0.255 
##  7 ENST00000233143… ENSG00… TMSB10    99.6      99.5     NA              -0.0685
##  8 ENST00000234875… ENSG00… RPL22     85.1      85.7     NA               0.564 
##  9 ENST00000243997… ENSG00… ATP5F1E   99.6      99.8     NA               0.206 
## 10 ENST00000245458… ENSG00… RPS29     98.4      98.2     NA              -0.132 
## # ℹ 415 more rows
ttest_result_type_m3Cgenes <- 
  percent_isoform_per_sample |> 
  right_join(DRS_m3C_genes) |> 
  filter(!is.na(gene_id)) |> 
  group_by(transcript_id, gene_id, gene_name) |> 
  do(ttest_result = perform_ttest_type(.)) |> 
  ungroup() |> 
  unnest(cols = ttest_result) |>
  arrange(p)
## Joining with `by = join_by(gene_id, gene_name)`
ttest_result_type_m3Cgenes 
## # A tibble: 425 × 11
##    transcript_id     gene_id gene_name .y.   group1 group2    n1    n2 statistic
##    <chr>             <chr>   <chr>     <chr> <chr>  <chr>  <int> <int>     <dbl>
##  1 ENST00000354332.8 ENSG00… S100A4    perc… Cont   siMET…     3     6     34.0 
##  2 ESPRESSO:chr1:16… ENSG00… S100A4    perc… Cont   siMET…     3     6     11.6 
##  3 ENST00000427217.6 ENSG00… ARPC1B    perc… Cont   siMET…     3     6      7.18
##  4 ENST00000368716.9 ENSG00… S100A4    perc… Cont   siMET…     3     6    -22.3 
##  5 ENST00000392514.9 ENSG00… RPLP0     perc… Cont   siMET…     3     6     -5.99
##  6 ENST00000407193.7 ENSG00… RPS14     perc… Cont   siMET…     3     6     -7.30
##  7 ENST00000532601.1 ENSG00… FTH1      perc… Cont   siMET…     3     6     -5.85
##  8 ENST00000273550.… ENSG00… FTH1      perc… Cont   siMET…     3     6      4.57
##  9 ENST00000372360.9 ENSG00… RPS24     perc… Cont   siMET…     3     6     -4.78
## 10 ENST00000613865.5 ENSG00… RPS24     perc… Cont   siMET…     3     6      4.48
## # ℹ 415 more rows
## # ℹ 2 more variables: df <dbl>, p <dbl>
diff_percent_isoform_m3Cgenes_pval <- 
  ttest_result_type_m3Cgenes |> 
  select(transcript_id, n1, n2, statistic, df, p) |> 
  mutate(p_adj = p.adjust(p, method = 'fdr')) |> 
  mutate(minuslog10padj = -log10(p_adj)) |> 
  inner_join(diff_percent_isoform) |> 
  mutate(
    p_label    = ifelse(p     < .05, paste(gene_name, transcript_id, sep = '\n'), NA),
    padj_label = ifelse(p_adj < .05, paste(gene_name, transcript_id, sep = '\n'), NA)
  )
## Joining with `by = join_by(transcript_id)`
diff_percent_isoform_m3Cgenes_pval |> 
  export_tsv(outdir = tabledir, compression = 'gz')
## 
## Exported to: ~/Google Drive/My Drive/Analysis/METTL2A/Tables/DRS_m3C_RNAs/Isoforms/diff_percent_isoform_m3Cgenes_pval_2024-07-29.tsv.gz
## # A tibble: 423 × 16
##    transcript_id         n1    n2 statistic    df       p   p_adj minuslog10padj
##    <chr>              <int> <int>     <dbl> <dbl>   <dbl>   <dbl>          <dbl>
##  1 ENST00000354332.8      3     6     34.0   6.18 2.91e-8 1.19e-5          4.92 
##  2 ESPRESSO:chr1:166…     3     6     11.6   4.50 1.58e-4 3.23e-2          1.49 
##  3 ENST00000427217.6      3     6      7.18  6.15 3.28e-4 4.47e-2          1.35 
##  4 ENST00000368716.9      3     6    -22.3   2.57 5.17e-4 5.29e-2          1.28 
##  5 ENST00000392514.9      3     6     -5.99  5.52 1.32e-3 1.00e-1          0.999
##  6 ENST00000407193.7      3     6     -7.30  4.25 1.47e-3 1.00e-1          0.999
##  7 ENST00000532601.1      3     6     -5.85  5.01 2.05e-3 1.20e-1          0.922
##  8 ENST00000273550.12     3     6      4.57  6.71 2.86e-3 1.46e-1          0.835
##  9 ENST00000372360.9      3     6     -4.78  5.04 4.87e-3 2.16e-1          0.665
## 10 ENST00000613865.5      3     6      4.48  5.33 5.6 e-3 2.16e-1          0.665
## # ℹ 413 more rows
## # ℹ 8 more variables: gene_id <chr>, gene_name <chr>, Cont <dbl>,
## #   siMETTL2A <dbl>, diff_percent_isoform <dbl>, log2FC_percent_isoform <dbl>,
## #   p_label <chr>, padj_label <chr>

Volcano plot

diff_percent_isoform_volcano_padj <- 
  diff_percent_isoform_pval |> 
  volcano_plot(
    x = diff_percent_isoform, y = p_adj, label = padj_label, FC_threshold = 1, 
    xlab = '∆ (% isoform)\n (KD - control)',
    ylab = paste('-log10 (p.adj)')
  )
diff_percent_isoform_volcano_padj |> 
  ggsave_multiple_formats(
    outdir = figdir, height = 9, width = 9, fontsize = 7
  )
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).

diff_percent_isoform_volcano_p <- 
  diff_percent_isoform_pval |> 
  volcano_plot(
    x = diff_percent_isoform, y = p, label = p_label, FC_threshold = 1, 
    xlab = '∆ (% isoform)\n (KD - control)' 
  )
diff_percent_isoform_volcano_p |> 
  ggsave_multiple_formats(
    outdir = figdir, height = 18, width = 18, fontsize = 7
  )
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27216 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1430 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27216 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: ggrepel: 1431 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27216 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1430 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27216 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: ggrepel: 1431 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27216 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1435 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

log2FC_percent_isoform_volcano_padj <- 
  diff_percent_isoform_pval |> 
  volcano_plot(
    x = log2FC_percent_isoform, y = p_adj, label = padj_label, 
    repel_max_overlaps = 20, 
    FC_threshold = 1,
    xlim = c(-6,6), x_num_breaks = 7
  )
log2FC_percent_isoform_volcano_padj |> 
  ggsave_multiple_formats(
    outdir = figdir, width = 9, height = 9, fontsize = 7
  )
## Warning: Removed 2132 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 2132 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 2132 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 2132 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 2132 rows containing missing values (`geom_point()`).
## Warning: Removed 28659 rows containing missing values (`geom_text_repel()`).

log2FC_percent_isoform_volcano_p <- 
  diff_percent_isoform_pval |> 
  volcano_plot(
    x = log2FC_percent_isoform, y = p, label = p_label, FC_threshold = 1.2, #xlim = c(-5, 5),
    repel_max_overlaps = 20
  )
log2FC_percent_isoform_volcano_p |> 
  ggsave_multiple_formats(
    outdir = figdir, width = 9, height = 9, fontsize = 7
  )
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27523 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1135 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27523 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1135 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27523 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1135 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27523 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1135 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 2128 rows containing missing values (`geom_point()`).
## Warning: Removed 27523 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 1121 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

diff_percent_isoform_m3Cgenes_volcano_padj <- 
  diff_percent_isoform_m3Cgenes_pval |> 
  volcano_plot(
    x = diff_percent_isoform, y = p_adj, label = padj_label, FC_threshold = 1, 
    xlab = '∆ (% isoform)\n (KD - control)',
    ylab = paste('-log10 (p.adj)')
  )
diff_percent_isoform_m3Cgenes_volcano_padj |> 
  ggsave_multiple_formats(
    outdir = figdir, height = 9, width = 9, fontsize = 7
  )
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).

diff_percent_isoform_m3Cgenes_volcano_p <- 
  diff_percent_isoform_m3Cgenes_pval |> 
  volcano_plot(
    x = diff_percent_isoform, y = p, label = p_label, FC_threshold = 1, xlim = c(-20, 20),
    xlab = '∆ (% isoform)\n (KD - control)', repel_max_overlaps = 20
  )
diff_percent_isoform_m3Cgenes_volcano_p |> 
  ggsave_multiple_formats(
    outdir = figdir, height = 9, width = 9, fontsize = 7
  )
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 370 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 48 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 370 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: ggrepel: 48 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 370 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 48 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 370 rows containing missing values (`geom_text_repel()`).
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: ggrepel: 48 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <e2>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <88>
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## conversion failure on '∆ (% isoform)' in 'mbcsToSbcs': dot substituted for <86>
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 370 rows containing missing values (`geom_text_repel()`).
## Warning: ggrepel: 43 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

log2FC_percent_isoform_m3Cgenes_volcano_p <- 
  diff_percent_isoform_m3Cgenes_pval |> 
  volcano_plot(
    x = log2FC_percent_isoform, y = p, label = p_label, 
    FC_threshold = 1.5, p_threshold = .01,
    xlim = c(-6, 6), x_num_breaks = 7,
    repel_max_overlaps = 20
  )
log2FC_percent_isoform_m3Cgenes_volcano_p |> 
  ggsave_multiple_formats(
    outdir = figdir, width = 9, height = 9, fontsize = 7
  )
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).
## Warning: Removed 14 rows containing missing values (`geom_point()`).
## Warning: Removed 420 rows containing missing values (`geom_text_repel()`).

barplot

barplot_percentage_isoforms('S100A4')
## # A tibble: 54 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    Cont  D     N1   
##  2 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    Cont  D     N2   
##  3 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    Cont  D     N3   
##  4 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    siME… G     N1   
##  5 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    siME… G     N2   
##  6 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    siME… G     N3   
##  7 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    siME… I     N1   
##  8 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    siME… I     N2   
##  9 ENST00000354332.8 S100A4-201      ENSG0000019615… S100A4    siME… I     N3   
## 10 ENST00000368715.5 S100A4-203      ENSG0000019615… S100A4    Cont  D     N1   
## # ℹ 44 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 12 × 13
##    transcript_id .y.   group1 group2    n1    n2 statistic    df       p   p.adj
##    <fct>         <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl>   <dbl>
##  1 ENST00000368… perc… D      G          3     3   -21.3    3.12 1.73e-4 3.46e-4
##  2 ENST00000368… perc… D      I          3     3   -23.0    2.08 2   e-3 2   e-3
##  3 ENST00000481… perc… D      G          3     3    -1.98   4.00 1.19e-1 1.19e-1
##  4 ENST00000481… perc… D      I          3     3    -5.57   3.45 8   e-3 1.6 e-2
##  5 ENST00000354… perc… D      G          3     3    42.8    3.04 2.51e-5 2.51e-5
##  6 ENST00000354… perc… D      I          3     3    36.8    4.00 3.28e-6 6.56e-6
##  7 ENST00000468… perc… D      G          3     3     6.96   3.72 3   e-3 3   e-3
##  8 ENST00000468… perc… D      I          3     3   -16.5    2.63 1   e-3 2   e-3
##  9 ENST00000368… perc… D      G          3     3    -3.91   2.35 4.6 e-2 9.1 e-2
## 10 ENST00000368… perc… D      I          3     3    -0.199  2.15 8.59e-1 8.59e-1
## 11 ESPRESSO:chr… perc… D      G          3     3    12.6    2.27 4   e-3 4   e-3
## 12 ESPRESSO:chr… perc… D      I          3     3    15.5    2.47 2   e-3 3   e-3
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('RPS24')
## # A tibble: 18 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     Cont  D     N1   
##  2 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     Cont  D     N2   
##  3 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     Cont  D     N3   
##  4 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     siME… G     N1   
##  5 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     siME… G     N2   
##  6 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     siME… G     N3   
##  7 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     siME… I     N1   
##  8 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     siME… I     N2   
##  9 ENST00000372360.9 RPS24-202       ENSG0000013832… RPS24     siME… I     N3   
## 10 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     Cont  D     N1   
## 11 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     Cont  D     N2   
## 12 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     Cont  D     N3   
## 13 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     siME… G     N1   
## 14 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     siME… G     N2   
## 15 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     siME… G     N3   
## 16 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     siME… I     N1   
## 17 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     siME… I     N2   
## 18 ENST00000613865.5 RPS24-214       ENSG0000013832… RPS24     siME… I     N3   
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 4 × 13
##   transcript_id  .y.   group1 group2    n1    n2 statistic    df       p   p.adj
##   <fct>          <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl>   <dbl>
## 1 ENST000006138… perc… D      G          3     3     26.7   3.99 1.20e-5 2.40e-5
## 2 ENST000006138… perc… D      I          3     3      5.68  2.92 1.2 e-2 1.2 e-2
## 3 ENST000003723… perc… D      G          3     3    -32.6   2.41 3.02e-4 6.04e-4
## 4 ENST000003723… perc… D      I          3     3     -9.95  2.27 6   e-3 6   e-3
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('RPS14')
## # A tibble: 27 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     Cont  D     N1   
##  2 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     Cont  D     N2   
##  3 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     Cont  D     N3   
##  4 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     siME… G     N1   
##  5 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     siME… G     N2   
##  6 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     siME… G     N3   
##  7 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     siME… I     N1   
##  8 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     siME… I     N2   
##  9 ENST00000312037.6 RPS14-201       ENSG0000016458… RPS14     siME… I     N3   
## 10 ENST00000407193.7 RPS14-203       ENSG0000016458… RPS14     Cont  D     N1   
## # ℹ 17 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 6 × 13
##   transcript_id     .y.    group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>             <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000407193.7 perce… D      G          3     3    -5.22   3.73 0.008 0.008
## 2 ENST00000407193.7 perce… D      I          3     3    -7.12   3.94 0.002 0.004
## 3 ENST00000519690.1 perce… D      G          3     3     0.353  3.21 0.746 1    
## 4 ENST00000519690.1 perce… D      I          3     3    -0.717  4.00 0.513 1    
## 5 ENST00000312037.6 perce… D      G          3     3     3.63   3.10 0.034 0.045
## 6 ENST00000312037.6 perce… D      I          3     3     5.12   2.48 0.023 0.045
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('MDK')
## # A tibble: 45 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       Cont  D     N1   
##  2 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       Cont  D     N2   
##  3 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       Cont  D     N3   
##  4 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       siME… G     N1   
##  5 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       siME… G     N2   
##  6 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       siME… G     N3   
##  7 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       siME… I     N1   
##  8 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       siME… I     N2   
##  9 ENST00000395565.5 MDK-202         ENSG0000011049… MDK       siME… I     N3   
## 10 ENST00000395566.9 MDK-203         ENSG0000011049… MDK       Cont  D     N1   
## # ℹ 35 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 10 × 13
##    transcript_id     .y.   group1 group2    n1    n2 statistic    df     p p.adj
##    <fct>             <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
##  1 ENST00000395566.9 perc… D      G          3     3    -3.16   3.95 0.035 0.07 
##  2 ENST00000395566.9 perc… D      I          3     3     3.80   2.13 0.056 0.07 
##  3 ENST00000407067.1 perc… D      G          3     3     1.49   2.71 0.242 0.242
##  4 ENST00000407067.1 perc… D      I          3     3    -7.63   3.47 0.003 0.005
##  5 ENST00000395565.5 perc… D      G          3     3     3.88   3.80 0.02  0.039
##  6 ENST00000395565.5 perc… D      I          3     3     0.116  3.81 0.913 0.913
##  7 ENST00000405308.6 perc… D      G          3     3     2.93   3.82 0.045 0.063
##  8 ENST00000405308.6 perc… D      I          3     3     3.29   3.90 0.032 0.063
##  9 ESPRESSO:chr11:3… perc… D      G          3     3    -0.393  3.90 0.715 1    
## 10 ESPRESSO:chr11:3… perc… D      I          3     3    -0.357  2.22 0.752 1    
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('SH3BGRL3')
## # A tibble: 27 × 9
##    transcript_id      transcript_name gene_id        gene_name type  si    rep  
##    <fct>              <chr>           <chr>          <chr>     <chr> <chr> <chr>
##  1 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  Cont  D     N1   
##  2 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  Cont  D     N2   
##  3 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  Cont  D     N3   
##  4 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  siME… G     N1   
##  5 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  siME… G     N2   
##  6 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  siME… G     N3   
##  7 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  siME… I     N1   
##  8 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  siME… I     N2   
##  9 ENST00000270792.10 SH3BGRL3-201    ENSG000001426… SH3BGRL3  siME… I     N3   
## 10 ENST00000319041.6  SH3BGRL3-202    ENSG000001426… SH3BGRL3  Cont  D     N1   
## # ℹ 17 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 6 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000270792.10 perc… D      G          3     3    -0.222  2.45 0.842 0.842
## 2 ENST00000270792.10 perc… D      I          3     3     2.16   2.22 0.15  0.3  
## 3 ENST00000319041.6  perc… D      G          3     3    -1.59   2.55 0.225 0.225
## 4 ENST00000319041.6  perc… D      I          3     3    -3.60   2.08 0.065 0.131
## 5 ESPRESSO:chr1:910… perc… D      G          3     3     1.50   2.27 0.259 0.259
## 6 ESPRESSO:chr1:910… perc… D      I          3     3     8.74   2.25 0.009 0.018
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('RPS27')
## # A tibble: 27 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     Cont  D     N1   
##  2 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     Cont  D     N2   
##  3 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     Cont  D     N3   
##  4 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     siME… G     N1   
##  5 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     siME… G     N2   
##  6 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     siME… G     N3   
##  7 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     siME… I     N1   
##  8 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     siME… I     N2   
##  9 ENST00000477151.2 RPS27-202       ENSG0000017795… RPS27     siME… I     N3   
## 10 ENST00000493224.5 RPS27-203       ENSG0000017795… RPS27     Cont  D     N1   
## # ℹ 17 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 6 × 13
##   transcript_id     .y.    group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>             <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000651669.1 perce… D      G          3     3     2.12   3.94 0.102 0.132
## 2 ENST00000651669.1 perce… D      I          3     3     2.52   3.97 0.066 0.132
## 3 ENST00000477151.2 perce… D      G          3     3     1.08   3.80 0.343 0.686
## 4 ENST00000477151.2 perce… D      I          3     3    -0.180  3.81 0.866 0.866
## 5 ENST00000493224.5 perce… D      G          3     3    -2.51   3.57 0.073 0.073
## 6 ENST00000493224.5 perce… D      I          3     3    -3.71   3.23 0.03  0.06 
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('ARPC1B')
## # A tibble: 45 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    Cont  D     N1   
##  2 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    Cont  D     N2   
##  3 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    Cont  D     N3   
##  4 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    siME… G     N1   
##  5 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    siME… G     N2   
##  6 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    siME… G     N3   
##  7 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    siME… I     N1   
##  8 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    siME… I     N2   
##  9 ENST00000458033.6 ARPC1B-212      ENSG0000013042… ARPC1B    siME… I     N3   
## 10 ENST00000468337.2 ARPC1B-214      ENSG0000013042… ARPC1B    Cont  D     N1   
## # ℹ 35 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 10 × 13
##    transcript_id     .y.   group1 group2    n1    n2 statistic    df     p p.adj
##    <fct>             <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
##  1 ENST00000646101.2 perc… D      G          3     3   -1.64    3.77 0.181 0.312
##  2 ENST00000646101.2 perc… D      I          3     3   -1.86    3.15 0.156 0.312
##  3 ENST00000481997.5 perc… D      G          3     3    0.488   2.87 0.66  0.66 
##  4 ENST00000481997.5 perc… D      I          3     3   -1.44    2.52 0.261 0.522
##  5 ENST00000468337.2 perc… D      G          3     3   -0.0789  2.27 0.944 0.944
##  6 ENST00000468337.2 perc… D      I          3     3   -1.25    3.24 0.293 0.586
##  7 ENST00000645391.1 perc… D      G          3     3    1.45    2.77 0.25  0.25 
##  8 ENST00000645391.1 perc… D      I          3     3    8.90    2.80 0.004 0.008
##  9 ENST00000458033.6 perc… D      G          3     3    2.96    2.33 0.081 0.081
## 10 ENST00000458033.6 perc… D      I          3     3    5.55    3.66 0.007 0.013
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('RPS3A')
## # A tibble: 18 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     Cont  D     N1   
##  2 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     Cont  D     N2   
##  3 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     Cont  D     N3   
##  4 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     siME… G     N1   
##  5 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     siME… G     N2   
##  6 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     siME… G     N3   
##  7 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     siME… I     N1   
##  8 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     siME… I     N2   
##  9 ENST00000274065.9 RPS3A-201       ENSG0000014542… RPS3A     siME… I     N3   
## 10 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     Cont  D     N1   
## 11 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     Cont  D     N2   
## 12 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     Cont  D     N3   
## 13 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     siME… G     N1   
## 14 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     siME… G     N2   
## 15 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     siME… G     N3   
## 16 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     siME… I     N1   
## 17 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     siME… I     N2   
## 18 ENST00000507327.5 RPS3A-205       ENSG0000014542… RPS3A     siME… I     N3   
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 4 × 13
##   transcript_id     .y.    group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>             <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000274065.9 perce… D      G          3     3     2.75   2.59 0.083 0.167
## 2 ENST00000274065.9 perce… D      I          3     3     1.38   3.43 0.249 0.249
## 3 ENST00000507327.5 perce… D      G          3     3    -0.699  3.74 0.526 0.526
## 4 ENST00000507327.5 perce… D      I          3     3     1.93   3.38 0.138 0.276
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_percentage_isoforms('RPL41')
## # A tibble: 45 × 9
##    transcript_id     transcript_name gene_id         gene_name type  si    rep  
##    <fct>             <chr>           <chr>           <chr>     <chr> <chr> <chr>
##  1 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     Cont  D     N1   
##  2 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     Cont  D     N2   
##  3 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     Cont  D     N3   
##  4 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     siME… G     N1   
##  5 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     siME… G     N2   
##  6 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     siME… G     N3   
##  7 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     siME… I     N1   
##  8 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     siME… I     N2   
##  9 ENST00000501597.3 RPL41-202       ENSG0000022911… RPL41     siME… I     N3   
## 10 ENST00000546591.6 RPL41-204       ENSG0000022911… RPL41     Cont  D     N1   
## # ℹ 35 more rows
## # ℹ 2 more variables: sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 10 × 13
##    transcript_id     .y.   group1 group2    n1    n2 statistic    df     p p.adj
##    <fct>             <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
##  1 ENST00000546591.6 perc… D      G          3     3    0.633   3.22 0.569 0.569
##  2 ENST00000546591.6 perc… D      I          3     3    1.67    3.40 0.182 0.364
##  3 ENST00000501597.3 perc… D      G          3     3   -2.06    3.87 0.11  0.11 
##  4 ENST00000501597.3 perc… D      I          3     3   -3.97    3.70 0.019 0.038
##  5 ENST00000546654.1 perc… D      G          3     3   -0.576   2.04 0.622 0.74 
##  6 ENST00000546654.1 perc… D      I          3     3    1.14    2.03 0.37  0.74 
##  7 ESPRESSO:chr12:4… perc… D      G          3     3    1.56    2.71 0.225 0.45 
##  8 ESPRESSO:chr12:4… perc… D      I          3     3   -0.807   4.00 0.465 0.465
##  9 ENST00000552314.1 perc… D      G          3     3    0.0147  2.22 0.989 0.989
## 10 ENST00000552314.1 perc… D      I          3     3   -1.33    2.26 0.303 0.606
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('ERLIN2')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 36 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  2 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  3 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  4 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  5 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  6 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  7 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  8 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
##  9 ENST00000519638.3 protein_coding  ERLIN2-204      ENSG00… protein_… ERLIN2   
## 10 ENST00000648919.1 protein_coding  ERLIN2-211      ENSG00… protein_… ERLIN2   
## # ℹ 26 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 8 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000519638.3  norm… D      G          3     3   -3.58    2.05 0.067 0.086
## 2 ENST00000519638.3  norm… D      I          3     3   -4.54    2.05 0.043 0.086
## 3 ENST00000648919.1  norm… D      G          3     3    5.22    3.48 0.009 0.019
## 4 ENST00000648919.1  norm… D      I          3     3    1.88    3.95 0.135 0.135
## 5 ENST00000335171.10 norm… D      G          3     3   -0.0642  2.04 0.955 0.955
## 6 ENST00000335171.10 norm… D      I          3     3   16.8     2    0.004 0.007
## 7 ENST00000523887.5  norm… D      G          3     3    1.67    2    0.237 0.474
## 8 ENST00000523887.5  norm… D      I          3     3    0.287   3.53 0.79  0.79 
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('NAP1L1')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 45 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  2 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  3 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  4 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  5 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  6 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  7 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  8 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
##  9 ENST00000549596.5 protein_coding  NAP1L1-215      ENSG00… protein_… NAP1L1   
## 10 ENST00000393263.7 protein_coding  NAP1L1-201      ENSG00… protein_… NAP1L1   
## # ℹ 35 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 10 × 13
##    transcript_id     .y.   group1 group2    n1    n2 statistic    df     p p.adj
##    <fct>             <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
##  1 ENST00000549596.5 norm… D      G          3     3  -3.08     3.37 0.046 0.08 
##  2 ENST00000549596.5 norm… D      I          3     3  -3.84     2.60 0.04  0.08 
##  3 ENST00000393263.7 norm… D      G          3     3  -0.00906  3.49 0.993 0.993
##  4 ENST00000393263.7 norm… D      I          3     3  -3.44     2.55 0.053 0.105
##  5 ESPRESSO:chr12:4… norm… D      G          3     3  -0.270    3.93 0.801 0.801
##  6 ESPRESSO:chr12:4… norm… D      I          3     3  -1.10     2.32 0.371 0.742
##  7 ENST00000618691.5 norm… D      G          3     3   8.93     2.01 0.012 0.012
##  8 ENST00000618691.5 norm… D      I          3     3  15.5      2.02 0.004 0.008
##  9 ENST00000535020.6 norm… D      G          3     3  -3.16     3.75 0.037 0.075
## 10 ENST00000535020.6 norm… D      I          3     3  -0.438    2.47 0.697 0.697
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('RNF216')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 18 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  2 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  3 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  4 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  5 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  6 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  7 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  8 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
##  9 ENST00000425013.6 protein_coding  RNF216-205      ENSG00… protein_… RNF216   
## 10 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 11 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 12 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 13 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 14 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 15 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 16 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 17 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## 18 ENST00000389902.8 protein_coding  RNF216-202      ENSG00… protein_… RNF216   
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 4 × 13
##   transcript_id     .y.    group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>             <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000425013.6 normc… D      G          3     3      5.66  3.94 0.005 0.006
## 2 ENST00000425013.6 normc… D      I          3     3      6.72  3.90 0.003 0.006
## 3 ENST00000389902.8 normc… D      G          3     3     -1.79  2    0.215 0.43 
## 4 ENST00000389902.8 normc… D      I          3     3     -1.68  2    0.235 0.43 
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('ITGB1-DT')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 18 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  2 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  3 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  4 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  5 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  6 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  7 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  8 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
##  9 ESPRESSO:chr10:2… <NA>            <NA>            ENSG00… lncRNA    ITGB1-DT 
## 10 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 11 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 12 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 13 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 14 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 15 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 16 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 17 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## 18 ENST00000691671.1 lncRNA          ITGB1-DT-206    ENSG00… lncRNA    ITGB1-DT 
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 4 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ESPRESSO:chr10:24… norm… D      G          3     3   -6.15    2    0.025 0.051
## 2 ESPRESSO:chr10:24… norm… D      I          3     3   -1.46    2    0.282 0.282
## 3 ENST00000691671.1  norm… D      G          3     3   -0.0903  3.99 0.932 0.932
## 4 ENST00000691671.1  norm… D      I          3     3    1.02    3.63 0.372 0.744
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('DEPDC1')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 27 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  2 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  3 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  4 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  5 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  6 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  7 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  8 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
##  9 ENST00000370966.9 protein_coding  DEPDC1-201      ENSG00… protein_… DEPDC1   
## 10 ENST00000456315.7 protein_coding  DEPDC1-202      ENSG00… protein_… DEPDC1   
## # ℹ 17 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 6 × 13
##   transcript_id     .y.    group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>             <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000370966.9 normc… D      G          3     3     -3.47  2.36 0.058 0.116
## 2 ENST00000370966.9 normc… D      I          3     3     -2.31  3.70 0.087 0.116
## 3 ENST00000456315.7 normc… D      G          3     3      2.18  2.24 0.147 0.222
## 4 ENST00000456315.7 normc… D      I          3     3      2.65  2.12 0.111 0.222
## 5 ENST00000488146.5 normc… D      G          3     3     -1     2    0.423 0.846
## 6 ENST00000488146.5 normc… D      I          3     3     -1     2    0.423 0.846
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('EZR')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 18 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  2 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  3 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  4 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  5 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  6 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  7 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  8 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
##  9 ENST00000367075.4 protein_coding  EZR-202         ENSG00… protein_… EZR      
## 10 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 11 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 12 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 13 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 14 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 15 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 16 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 17 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## 18 ENST00000337147.… protein_coding  EZR-201         ENSG00… protein_… EZR      
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 4 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000367075.4  norm… D      G          3     3     1.76   3.94 0.155 0.268
## 2 ENST00000367075.4  norm… D      I          3     3     1.88   3.93 0.134 0.268
## 3 ENST00000337147.11 norm… D      G          3     3    -2.77   3.97 0.051 0.102
## 4 ENST00000337147.11 norm… D      I          3     3    -0.392  3.43 0.718 0.718
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('ITGA6')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 27 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  2 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  3 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  4 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  5 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  6 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  7 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  8 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  9 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
## 10 ENST00000409080.6 protein_coding  ITGA6-202       ENSG00… protein_… ITGA6    
## # ℹ 17 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 6 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000684293.1  norm… D      G          3     3    -11.5   2.69 0.002 0.005
## 2 ENST00000684293.1  norm… D      I          3     3     -6.43  3.14 0.007 0.007
## 3 ENST00000409080.6  norm… D      G          3     3      2.12  2.37 0.147 0.294
## 4 ENST00000409080.6  norm… D      I          3     3      1.71  2.18 0.219 0.294
## 5 ENST00000264107.12 norm… D      G          3     3     -3.87  3.68 0.021 0.042
## 6 ENST00000264107.12 norm… D      I          3     3     -1.11  2.62 0.357 0.357
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('UAP1')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 36 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  2 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  3 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  4 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  5 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  6 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  7 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  8 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
##  9 ENST00000367926.9 protein_coding  UAP1-202        ENSG00… protein_… UAP1     
## 10 ENST00000367925.6 protein_coding  UAP1-201        ENSG00… protein_… UAP1     
## # ℹ 26 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 8 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000367926.9  norm… D      G          3     3     4.65   2.04 0.041 0.083
## 2 ENST00000367926.9  norm… D      I          3     3     0.880  3.57 0.434 0.434
## 3 ENST00000367925.6  norm… D      G          3     3    -1.63   3.35 0.192 0.384
## 4 ENST00000367925.6  norm… D      I          3     3    -0.607  3.78 0.578 0.578
## 5 ESPRESSO:chr1:173… norm… D      G          3     3    -0.362  3.41 0.738 0.986
## 6 ESPRESSO:chr1:173… norm… D      I          3     3     0.757  3.86 0.493 0.986
## 7 ENST00000486089.1  norm… D      G          3     3    -0.689  4.00 0.528 1    
## 8 ENST00000486089.1  norm… D      I          3     3    -0.595  3.99 0.584 1    
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('ITGA6')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 27 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  2 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  3 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  4 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  5 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  6 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  7 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  8 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
##  9 ENST00000684293.1 protein_coding  ITGA6-212       ENSG00… protein_… ITGA6    
## 10 ENST00000409080.6 protein_coding  ITGA6-202       ENSG00… protein_… ITGA6    
## # ℹ 17 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 6 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000684293.1  norm… D      G          3     3    -11.5   2.69 0.002 0.005
## 2 ENST00000684293.1  norm… D      I          3     3     -6.43  3.14 0.007 0.007
## 3 ENST00000409080.6  norm… D      G          3     3      2.12  2.37 0.147 0.294
## 4 ENST00000409080.6  norm… D      I          3     3      1.71  2.18 0.219 0.294
## 5 ENST00000264107.12 norm… D      G          3     3     -3.87  3.68 0.021 0.042
## 6 ENST00000264107.12 norm… D      I          3     3     -1.11  2.62 0.357 0.357
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('ADD3')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 36 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  2 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  3 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  4 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  5 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  6 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  7 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  8 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
##  9 ENST00000356080.9 protein_coding  ADD3-202        ENSG00… protein_… ADD3     
## 10 ENST00000277900.… protein_coding  ADD3-201        ENSG00… protein_… ADD3     
## # ℹ 26 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 8 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000356080.9  norm… D      G          3     3     7.84   4.00 0.001 0.003
## 2 ENST00000356080.9  norm… D      I          3     3     1.33   2.86 0.281 0.281
## 3 ENST00000277900.12 norm… D      G          3     3    -3.69   3.89 0.022 0.027
## 4 ENST00000277900.12 norm… D      I          3     3    -6.27   2.51 0.014 0.027
## 5 ENST00000488799.5  norm… D      G          3     3    -0.877  3.87 0.432 0.432
## 6 ENST00000488799.5  norm… D      I          3     3    -1.77   2.10 0.212 0.424
## 7 ENST00000360162.7  norm… D      G          3     3    -2.39   2.19 0.128 0.128
## 8 ENST00000360162.7  norm… D      I          3     3    -2.66   3.64 0.062 0.124
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('SAP18')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 45 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  2 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  3 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  4 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  5 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  6 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  7 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  8 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
##  9 ENST00000607003.5 protein_coding  SAP18-207       ENSG00… protein_… SAP18    
## 10 ENST00000382533.9 protein_coding  SAP18-201       ENSG00… protein_… SAP18    
## # ℹ 35 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 10 × 13
##    transcript_id .y.   group1 group2    n1    n2 statistic    df       p   p.adj
##    <fct>         <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl>   <dbl>
##  1 ENST00000607… norm… D      G          3     3   -14.8    3.23 4.42e-4 8.84e-4
##  2 ENST00000607… norm… D      I          3     3     1.27   3.31 2.86e-1 2.86e-1
##  3 ENST00000382… norm… D      G          3     3    16.5    2    4   e-3 7   e-3
##  4 ENST00000382… norm… D      I          3     3     1.27   3.31 2.86e-1 2.86e-1
##  5 ENST00000621… norm… D      G          3     3    16.5    2    4   e-3 7   e-3
##  6 ENST00000621… norm… D      I          3     3     1.27   3.31 2.86e-1 2.86e-1
##  7 ENST00000450… norm… D      G          3     3     1.37   2.23 2.93e-1 5.86e-1
##  8 ENST00000450… norm… D      I          3     3     0.847  3.40 4.53e-1 5.86e-1
##  9 ENST00000471… norm… D      G          3     3     1.95   2.76 1.55e-1 3.1 e-1
## 10 ENST00000471… norm… D      I          3     3     1.25   3.16 2.97e-1 3.1 e-1
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('TSPAN8')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 36 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  2 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  3 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  4 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  5 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  6 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  7 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  8 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
##  9 ENST00000546561.2 protein_coding  TSPAN8-203      ENSG00… protein_… TSPAN8   
## 10 ENST00000247829.8 protein_coding  TSPAN8-201      ENSG00… protein_… TSPAN8   
## # ℹ 26 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 8 × 13
##   transcript_id      .y.   group1 group2    n1    n2 statistic    df     p p.adj
##   <fct>              <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
## 1 ENST00000546561.2  norm… D      G          3     3     6.21   3.95 0.004 0.007
## 2 ENST00000546561.2  norm… D      I          3     3     7.43   3.05 0.005 0.007
## 3 ENST00000247829.8  norm… D      G          3     3    -5.07   3.30 0.012 0.023
## 4 ENST00000247829.8  norm… D      I          3     3    -2.83   2.12 0.099 0.099
## 5 ESPRESSO:chr12:41… norm… D      G          3     3    -1.62   2.56 0.219 0.219
## 6 ESPRESSO:chr12:41… norm… D      I          3     3    -2.76   3.23 0.065 0.13 
## 7 ENST00000552128.2  norm… D      G          3     3     0.220  2.73 0.842 0.842
## 8 ENST00000552128.2  norm… D      I          3     3     2.09   3.80 0.109 0.218
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('PFDN5')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 54 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  2 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  3 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  4 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  5 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  6 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  7 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  8 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
##  9 ENST00000334478.9 protein_coding  PFDN5-202       ENSG00… protein_… PFDN5    
## 10 ENST00000351500.7 protein_coding  PFDN5-203       ENSG00… protein_… PFDN5    
## # ℹ 44 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 12 × 13
##    transcript_id     .y.   group1 group2    n1    n2 statistic    df     p p.adj
##    <fct>             <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
##  1 ENST00000334478.9 norm… D      G          3     3    -6.55   3.98 0.003 0.006
##  2 ENST00000334478.9 norm… D      I          3     3    -1.08   2.10 0.388 0.388
##  3 ENST00000351500.7 norm… D      G          3     3    -7.40   2.08 0.016 0.025
##  4 ENST00000351500.7 norm… D      I          3     3    -8.34   2.07 0.013 0.025
##  5 ENST00000243040.… norm… D      G          3     3     0.374  2.44 0.738 0.738
##  6 ENST00000243040.… norm… D      I          3     3    -3.63   3.25 0.031 0.063
##  7 ENST00000548984.1 norm… D      G          3     3    -1.02   3.99 0.365 0.73 
##  8 ENST00000548984.1 norm… D      I          3     3    -1.09   2.54 0.368 0.73 
##  9 ENST00000550846.5 norm… D      G          3     3    -2.17   2.63 0.131 0.131
## 10 ENST00000550846.5 norm… D      I          3     3    -4.05   3.35 0.022 0.044
## 11 ENST00000547130.6 norm… D      G          3     3    -2.00   2.38 0.163 0.163
## 12 ENST00000547130.6 norm… D      I          3     3    -7.15   3.13 0.005 0.01 
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('RTN4')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 45 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  2 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  3 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  4 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  5 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  6 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  7 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  8 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
##  9 ENST00000394609.6 protein_coding  RTN4-205        ENSG00… protein_… RTN4     
## 10 ENST00000317610.… protein_coding  RTN4-201        ENSG00… protein_… RTN4     
## # ℹ 35 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 10 × 13
##    transcript_id .y.   group1 group2    n1    n2 statistic    df       p   p.adj
##    <fct>         <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl>   <dbl>
##  1 ENST00000394… norm… D      G          3     3    -0.674  3.15 5.46e-1 5.46e-1
##  2 ENST00000394… norm… D      I          3     3   -20.1    3.82 5.11e-5 1.02e-4
##  3 ENST00000317… norm… D      G          3     3    -3.22   3.49 3.9 e-2 7.8 e-2
##  4 ENST00000317… norm… D      I          3     3     2.57   3.95 6.3 e-2 7.8 e-2
##  5 ENST00000491… norm… D      G          3     3     0.411  3.24 7.07e-1 7.07e-1
##  6 ENST00000491… norm… D      I          3     3    -1.75   3.98 1.55e-1 3.1 e-1
##  7 ENST00000485… norm… D      G          3     3    -0.907  2.05 4.58e-1 5.5 e-1
##  8 ENST00000485… norm… D      I          3     3    -1.49   2.00 2.75e-1 5.5 e-1
##  9 ENST00000357… norm… D      G          3     3    -2.53   3.99 6.5 e-2 1.3 e-1
## 10 ENST00000357… norm… D      I          3     3    -1.05   3.33 3.63e-1 3.63e-1
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('S100A4')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 54 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  2 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  3 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  4 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  5 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  6 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  7 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  8 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
##  9 ENST00000368716.9 protein_coding  S100A4-204      ENSG00… protein_… S100A4   
## 10 ENST00000481009.1 protein_coding… S100A4-206      ENSG00… protein_… S100A4   
## # ℹ 44 more rows
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 12 × 13
##    transcript_id .y.   group1 group2    n1    n2 statistic    df       p   p.adj
##    <fct>         <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl>   <dbl>
##  1 ENST00000368… norm… D      G          3     3  -15.7     2.48 2   e-3 2   e-3
##  2 ENST00000368… norm… D      I          3     3  -16.6     2.89 5.97e-4 1   e-3
##  3 ENST00000481… norm… D      G          3     3  -11.4     3.57 6.23e-4 1   e-3
##  4 ENST00000481… norm… D      I          3     3   -9.86    3.36 1   e-3 1   e-3
##  5 ENST00000354… norm… D      G          3     3   52.9     2.59 5.29e-5 5.29e-5
##  6 ENST00000354… norm… D      I          3     3   36.9     3.47 1.26e-5 2.52e-5
##  7 ENST00000468… norm… D      G          3     3    0.0207  2.69 9.85e-1 9.85e-1
##  8 ENST00000468… norm… D      I          3     3  -35.0     4.00 3.99e-6 7.98e-6
##  9 ENST00000368… norm… D      G          3     3  -10.3     3.54 9.29e-4 2   e-3
## 10 ENST00000368… norm… D      I          3     3   -6.85    3.48 4   e-3 4   e-3
## 11 ESPRESSO:chr… norm… D      G          3     3    7.75    2.03 1.6 e-2 1.6 e-2
## 12 ESPRESSO:chr… norm… D      I          3     3   11.1     2.88 2   e-3 4   e-3
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`

barplot_normcount_isoforms('RPS24')
## Joining with `by = join_by(transcript_id, transcript_name)`
## # A tibble: 18 × 13
##    transcript_id     transcript_type transcript_name gene_id gene_type gene_name
##    <fct>             <chr>           <chr>           <chr>   <chr>     <chr>    
##  1 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  2 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  3 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  4 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  5 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  6 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  7 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  8 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
##  9 ENST00000613865.5 protein_coding  RPS24-214       ENSG00… protein_… RPS24    
## 10 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 11 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 12 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 13 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 14 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 15 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 16 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 17 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## 18 ENST00000372360.9 protein_coding  RPS24-202       ENSG00… protein_… RPS24    
## # ℹ 7 more variables: seqname <chr>, type <chr>, si <chr>, rep <chr>,
## #   normcount <dbl>, sum_normcount <dbl>, percent_transcript <dbl>
## # A tibble: 4 × 13
##   transcript_id  .y.   group1 group2    n1    n2 statistic    df       p   p.adj
##   <fct>          <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl>   <dbl>
## 1 ENST000006138… norm… D      G          3     3    -0.763  3.89 4.89e-1 4.89e-1
## 2 ENST000006138… norm… D      I          3     3    -3.05   2.52 6.9 e-2 1.38e-1
## 3 ENST000003723… norm… D      G          3     3   -53.3    3.57 2.59e-6 5.18e-6
## 4 ENST000003723… norm… D      I          3     3    -6.14   2.09 2.3 e-2 2.3 e-2
## # ℹ 3 more variables: p.adj.signif <chr>, y.position <dbl>, groups <named list>
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`
## No summary function supplied, defaulting to `mean_se()`